//: Playground - noun: a place where people can play

import UIKit

var str = "Hello, playground"
//Swift中类可以使用计算属性，即使用get和set来间接获取/改变其他属性的值
class Calcuator{
    var a:Int = 1;
    var b:Int = 1;
    
    var sum:Int{
        get{
            return a + b
        }
        set(val){
            b = val - a
        }
    }
}
let cal = Calcuator();
println(cal.sum) //2
cal.sum = 5
println(cal.b) //4

//对于set有简写方法，简写时，新赋的值默认为newValue
class Calcuator1{
    var a:Int = 1;
    var b:Int = 1;
    
    var sum:Int{
        get{
            return a + b
        }
        set{
            b = newValue - a
        }
    }
}

//如果只要get，不要set方法时可以简写成如下代码
class Calcuator2{
    var a:Int = 1;
    var b:Int = 1;
    
    var sum:Int{
        return a + b
    }
}


protocol Person {
    //读写属性
    var name:String{get set}
    
    //只读属性
    var age:Int{get}
    
    //类型方法
    static func method1()
    
    //实例方法
    func method2() -> Int
    
    //突变方法
    mutating func method3()
}


//协议可以继承另一个协议
protocol Animal{
    func move()
}

protocol Bird:Animal{
    func song()
}

class Chiken:Bird{//遵循了Bird协议
    func song(){
        print("母鸡咯咯")
    }
    
    func move(){
        print("母鸡走")
    }
}


